# 列表生成式，可以用来创建list的生成式
print(list(range(1, 111)))
print([x*x for x in range(1,11)])
print([x*x for x in range(1,11) if x%2==0])
print([m+n for m in 'ABC' for n in 'XYZ'])

import os
print([d for d in os.listdir('.')])

d = {'x': 'A', 'y': 'B', 'z': 'C' }
for k, v in d.items():
    print(k, v)

# 列表生成式也可以使用两个变量来生成list：
d = {'x': 'A', 'y': 'B', 'z': 'C' }
print([k+'='+v for k, v in d.items()])
# 把一个list中所有的字符串变成小写
L = ['Hello', 'World', 'IBM', 'Apple']
print([s.lower() for s in L])
# if else使用
print([x for x in range(1,11) if x%2==0])
# 一般情况下，if后面不能加else否则会报错,if在其中是一个筛选条件
# print([x for x in range(1,11) if x%2==0 else 0])
# if 写在for前面是必须要else，否则报错，应为此时for前面是一个表达式此时需要else计算出结果，必须加上上else
print([x if x%2==0 else -x for x in range(1,11)])
# 在一个列表生成表达式中for前面的if，，else是表达式，后面的是过滤条件，不能带else
# 练习（吧大写转小写）
L1 = ['Hello', 'World', 18, 'Apple', None]
print([x.lower() if isinstance(x,str)  else x for x in L1])
print( [i.lower() for i in L1 if isinstance(i,str)])